home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1993-12-09 | 8.2 KB | 212 lines |
- DEFINITION MODULE DosSystem;
- __DEF_SWITCHES__
- #ifdef HM2
- #ifdef __LONG_WHOLE__
- (*$!i+: Modul muss mit $i- uebersetzt werden! *)
- (*$!w+: Modul muss mit $w- uebersetzt werden! *)
- #else
- (*$!i-: Modul muss mit $i+ uebersetzt werden! *)
- (*$!w-: Modul muss mit $w+ uebersetzt werden! *)
- #endif
- #endif
- (*****************************************************************************)
- (* 04-Dez-93, Holger Kleinschmidt *)
- (*****************************************************************************)
-
- FROM SYSTEM IMPORT
- (* TYPE *) ADDRESS;
-
- FROM PORTAB IMPORT
- (* TYPE *) UNSIGNEDWORD, UNSIGNEDLONG, WORDSET;
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- TYPE
- MachineType = (atariST, atariSTE, atariTT, atari);
-
- TYPE
- CPUType = (CPU68000, CPU68010, CPU68020, CPU68030, CPU68040, CPU68XXX);
-
- TYPE
- FPUFlags = (
- sfp004, (* SFP 004 oder kompatible FPU-Peripheriekarte *)
- fpu1, (* Bitmaske, siehe FPU* *)
- fpu2, (* -""- *)
- m68040 (* 68040-Prozessor mit integrierter FPU *)
- );
-
- FPUType = SET OF FPUFlags;
-
- CONST
- FPUMask = FPUType{fpu1,fpu2};
-
- FPU81or82 = FPUType{fpu1}; (* 68881 oder 68882 *)
- FPU81 = FPUType{fpu2}; (* eindeutig 68881 *)
- FPU82 = FPUType{fpu1,fpu2}; (* eindeutig 68882 *)
-
- TYPE
- FPUInfo = RECORD
- fpu : FPUType;
- linef : UNSIGNEDWORD; (* <> 0: Line-F-Instruktionen erlaubt *)
- END;
-
-
- TYPE
- CmdLine = ARRAY [0..127] OF CHAR;
-
- BasePtr = POINTER TO BasePage;
- BasePPtr = POINTER TO BasePtr;
- BasePage = RECORD
- pLowtpa : ADDRESS;
- pHitpa : ADDRESS;
- pTbase : ADDRESS;
- pTlen : UNSIGNEDLONG;
- pDbase : ADDRESS;
- pDlen : UNSIGNEDLONG;
- pBbase : ADDRESS;
- pBlen : UNSIGNEDLONG;
- pDta : ADDRESS;
- pParent : BasePtr;
- res1 : UNSIGNEDLONG;
- pEnv : ADDRESS;
- res2 : ARRAY [0..19] OF UNSIGNEDLONG;
- pCmdlin : CmdLine;
- END;
-
-
- TYPE
- OsPtr = POINTER TO OsHeader;
- OsHeader = RECORD
- osEntry : UNSIGNEDWORD;
- osVersion : UNSIGNEDWORD;
- reseth : ADDRESS;
- osBeg : OsPtr;
- osEnd : ADDRESS;
- osRsv1 : UNSIGNEDLONG;
- osMagic : ADDRESS;
- osDate : UNSIGNEDLONG;
- osConf : WORDSET;
- osDosdate : WORDSET;
- (* die folgenden Variablen ab TOS 1.02 *)
- pRoot : ADDRESS;
- pkbshift : ADDRESS;
- pRun : BasePPtr;
- pRsv2 : ADDRESS;
- END;
-
- TYPE
- Shell = (None, Mupfel, Gemini, Gulam, Master, Unknown);
-
-
- VAR
- BASEP : BasePtr; (* Zeiger auf die eigene Basepage *)
-
- (*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
-
- PROCEDURE GetOsHeader ((* -- /AUS *) VAR osp : ADDRESS );
-
- (*--------------------------------------------------------------------------
- | Liefert einen Zeiger auf die OSHEADER-Systemstruktur |
- --------------------------------------------------------------------------*)
-
- PROCEDURE DosVersion ( ): CARDINAL;
-
- (*--------------------------------------------------------------------------
- | Liefert die kodierte DOS-Version |
- --------------------------------------------------------------------------*)
-
- PROCEDURE SysClock ( ): UNSIGNEDLONG;
-
- (*--------------------------------------------------------------------------
- | Liefert zurueck, wie oft die Systemvariable '_hz_200' seit Programmstart |
- | erhoeht wurde. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE ShellInstalled ( ): Shell;
-
- (*--------------------------------------------------------------------------
- | Versucht festzustellen, ob ueber die Systemvariable '_shell_p' eine |
- | Kommandoshell installiert ist. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE CallShell ((* EIN/ -- *) VAR cmd : ARRAY OF CHAR ): INTEGER;
-
- (*--------------------------------------------------------------------------
- | Versucht ein Shell-Kommando ueber die Systemvariable '_shell_p' abzu- |
- | setzen. Vorher wird mit "ShellInstalled()" ueberprueft, ob eine Shell |
- | installiert ist; wenn allerdings nach einem Reset oder nach Beendigung |
- | einer Shell (-> Gulam) diese Variable nicht wieder auf Null gesetzt wird,|
- | gibts mit ziemlicher Sicherheit einen Systemabsturz! |
- | Als Funktionswert wird -1 zurueckgeliefert, falls keine Shell installiert|
- | ist, ansonsten der Rueckgabewert der Shell. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE ProcessDomain ((* EIN/ -- *) dom : INTEGER ): INTEGER;
-
- (*--------------------------------------------------------------------------
- | Beeinflusst das Verhalten bestimmter Systemaufrufe. |
- | <dom> < 0: Keine Aenderung |
- | <dom> = 0: TOS-Domain |
- | <dom> = 1: MiNT-Domain |
- | |
- | Der alte ``Domain''-Wert wird zurueckgeliefert. Die Funktion hat nur |
- | unter MiNT eine Auswirkung. |
- | Ist MiNT bei Programmstart aktiv, wird automatisch MiNT-Domain voreinge- |
- | stellt. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE DosPid ((* EIN/ -- *) bp : ADDRESS ): INTEGER;
-
- (*--------------------------------------------------------------------------
- | Berechnet aus der Adresse der Basepage eine (hoffentlich) eindeutige |
- | Prozesskennung. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE GetCookie ((* EIN/ -- *) cookie : UNSIGNEDLONG;
- (* -- /AUS *) VAR value : UNSIGNEDLONG ): BOOLEAN;
-
- (*--------------------------------------------------------------------------
- | Der Cookie mit der ID <cookie> wird gesucht. Ist der Cookie nicht vor- |
- | handen oder kein Cookie Jar installiert, ist der Funktionswert FALSE, |
- | und <value> ist Null;sonst wird in <value> der Wert des Cookies geliefert|
- --------------------------------------------------------------------------*)
-
-
- (* Die folgenden Funktionen liefern ihren Wert anhand eines Cookiejar-
- * Eintrags, der aber nur beim Programmstart untersucht wird, da davon
- * ausgegangen wird, das sich der Wert dieser Cookies waehrend des
- * Programmlaufs nicht aendert.
- *)
-
- PROCEDURE Machine ( ): MachineType;
-
- (*--------------------------------------------------------------------------
- | Versucht den Typ des Rechners durch den '_MCH'-Cookie festzustellen. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE CPU ( ): CPUType;
-
- (*--------------------------------------------------------------------------
- | Versucht den Typ der CPU durch den '_CPU'-Cookie festzustellen. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE FPU ((* -- /AUS *) VAR info : FPUInfo );
-
- (*--------------------------------------------------------------------------
- | Versucht den Typ der FPU durch den '_FPU'-Cookie festzustellen. |
- --------------------------------------------------------------------------*)
-
- PROCEDURE MiNTVersion ( ): CARDINAL;
-
- (*--------------------------------------------------------------------------
- | Liefert die kodierte MiNT-Version (= 0, falls MiNT nicht aktiv). |
- --------------------------------------------------------------------------*)
-
- PROCEDURE FileLocking ( ): BOOLEAN;
-
- (*--------------------------------------------------------------------------
- | Testet, ob das Betriebssystem ``File locking'' unterstuetzt. |
- --------------------------------------------------------------------------*)
-
- END DosSystem.
-